package cn.itcast.nems.enrol.service;

import cn.itcast.nems.enrol.dto.EnrolCreateVO;
import cn.itcast.nems.manager.kc.model.AccessTokenModel;
import cn.itcast.nems.order.dto.CreateOrderResultDTO;
import cn.itcast.nems.order.dto.NewOrderDTO;

import java.util.List;

/**
 * <p>
 * 报名页面相关接口
 * </p>
 *
 * @author zhouwei
 * @since 2023/9/11 10:54 PM
 **/
public interface EnrolService {
    /**
     * 生成报名链接
     * @param createVO 请求参数
     * @return 报名链接
     */
    String url (EnrolCreateVO createVO) ;

    /**
     * 验证 sid ,并获取 oautn 认证  token
     * @param sid 生成报名页面URL 序列号
     * @return token
     */
    AccessTokenModel<?> getToken(String sid) ;

    /**
     * 获取SCRM请求参数对象
     * @param sid uuid
     * @return  立即报名请求对象
     */
    public EnrolCreateVO getEnrolCreateVO(String sid) ;

    /**
     * 提供给EMS 报名回调使用
     * @param orderList
     * @param historyBizNoList 历史订单对应的业务编号
     * @return
     */
    List<CreateOrderResultDTO> callback(List<NewOrderDTO> orderList , List<String> historyBizNoList) ;

    //    /**
    //     * 根据EMS 响应正文或请求参数 创建 NEMS订单信息
    //     * @param emsEnrolFormDTO 请求参数
    //     * @return 生成结果
    //     */
    //    List<EnrolOrderResultBean> processCreateOrder(EmsEnrolFormDTO emsEnrolFormDTO) ;

}
